An enterprise can operate a software system that is accessed by a plurality of entities (e.g., customers). For example, the enterprise can provide software services that are accessed by the multiple entities in a multi-tenant configuration. Example software systems can include, without limitation, an enterprise resource planning (ERP) system, a customer relationship management (CRM) system, a supply chain management (SCM) system, and a product lifecycle management (PLM) system.
Infrastructures such as cloud computing infrastructures are based on sharing resources. The sharing principle can be beneficial on the software as a service (SaaS) level where, for example, a single application instance (e.g., ERP application, CRM application, SCM application, PLM application) is shared among multiple groups of users. Such sharing enables significant cost reduction and maintenance efforts. This approach of sharing a single application instance is called multi-tenancy. Multi-tenancy can be described as a principle of delivering SaaS, where a group of consumers (e.g., users, servers), defined as one tenant, share a single application instance with other tenants, and each tenant has its own view onto the application (e.g., in both functional and non-functional aspects).
Multi-tenant architectures enable each tenant to access shared data, and tenant-specific data stored in a database system. Shared data is data that is shared with all tenants of the software system. For example, a vendor of the software system can provide shared data that is the same for all tenants. Tenant-specific data, however, is specific to an individual tenant, and should only be accessed by a respective tenant.